1. Field of the Invention
This invention relates to data processing apparatus and the concurrent execution of plural operating systems using virtual machine technology. More particularly, the invention is directed to techniques for sharing memory between such operating systems and their applications while ensuring that no one application unduly delays any other from accessing the shared memory.
2. Description of the Prior Art
By way of background, many currently available computer platforms are capable of supporting concurrent operating system execution using the notion of virtual machines. According to this technology, a super-privileged control program known as a hypervisor or virtual machine monitor (VMM) provides an interface between each operating system and the underlying hardware. By managing memory, I/O device access, and CPU scheduling, the hypervisor provides safe virtual machine environments for its operating systems.
A benefit of running plural operating systems on a single hardware platform is that different applications can run concurrently on the various operating systems while cooperatively sharing data using a region of shared memory as a high bandwidth and low latency communication channel. However, problems can arise when conventional mutual exclusion techniques are employed to guard the shared data as it is being accessed. For example, although various types of spinlocks are used pervasively on multiprocessor platforms running single operating systems, spinlocks can have unintended consequences in a multi-operating system environment. In particular, an application of one operating system that holds a lock while in a critical section can be preempted by the hypervisor, or preempted by the operating system, or the application may take a page fault. In that case, a concurrently running application of a different operating system might be unduly delayed waiting for the first application to complete the critical section and release the spinlock. Such delay may be unacceptable in many situations, especially if the delayed application is performing real-time processing.
There are prior art scheduling solutions for single operating system environments to prevent the preemption of applications holding locks. As far as known, however, no such protections have been proposed for multi-operating system environments, especially those in which real-time applications share data with non-real-time applications. Nor do the foregoing scheduling solutions address the issue of page faults. It would be desirable, therefore, to provide a technique whereby data sharing can be implemented in a multi-operating system environment while ensuring fairness for all applications. What is particularly needed is a solution that accommodates all of the usual mutual-exclusion mechanisms, such as spinlocks, but without the attendant problems noted above.